package demo;

/**
 *  相交链表
 */
class Solution11 {
	public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
		if (headA == null || headB == null) {
			return null;
		}
		ListNode pA = headA, pB = headB;
		// 在这里第一轮体现在pA和pB第一次到达尾部会移向另一链表的表头,
		// 而第二轮体现在如果pA或pB相交就返回交点, 不相交最后就是null==null
		while(pA != pB) {
			pA = pA == null ? headB : pA.next;
			pB = pB == null ? headA : pB.next;
		}
		return pA;
	}
}

